(PYTHON) Day - 12 Math(1)

Reference

  • 문제 출처 - HackerRank
  • 파이썬 연습 - Practice - Python
  • math 모듈 - YUN DAE HEE githubpage

개인적인 생각과 상상으로 작성한 내용들이 포함되어 있습니다
문제를 풀고 Discussion Tab을 참고하며 코드 스타일을 개선하려고 노력하고자 합니다


HackerRank


Math


기본 개념

수학 관련 Built-in functions

abs(x)
인자 x의 절대값을 반환합니다.


> > > abs(-2)
> > > 2

divmod(a, b)
복소수가 아닌 인자 a, b에 대한 나눗셈의 몫과 나머지를 반환합니다. 즉, 결과값이 (a//b, a%b)와 같습니다.


> > > divmod(5, 3)
> > > (1, 2)
> > > divmod(8.0, 2.0)
> > > (4.0, 0.0)

min(iterable, *[, key, default]) or min(arg1, arg2, *args[, key])
max(iterable, *[, key, default]) or max(arg1, arg2, *args[, key])
각각 최소값, 최대값을 구하는 함수입니다.

def findMax(num):
rem = 0
while(num):
rem = num%10
return rem

# using max(arg1, arg2, \*args, key)

print('Number with max remainder is:', max(11,48,33,17,19, key=findMax))

# using max(iterable, key)

num = [11,48,33,17]
print('Number with max remainder is:', max(num, key=findMax))
Number with max remainder is: 19
Number with max remainder is: 48

sum(iterable, /, start=0)
iterable의 숫자들을 왼쪽부터 차례로 더하여 start의 값에 합한 값을 반환합니다. 즉, 전체합을 반환합니다.


> > > numbers = [2.5, 3, 4, -5]

> > > # start 인자가 생략된 경우
> > >
> > > numbers_sum = sum(numbers)
> > > print(numbers_sum)
> > > 4.5

> > > # start = 10
> > >
> > > numbers_sum = sum(numbers, 10)
> > > print(numbers_sum)
> > > 14.5

pow(base, exp[, mod])
밑(base)의 지수(exp)만큼 거듭제곱한 값을 반환합니다. 옵션으로 mod 인자가 있는 경우 거듭제곱 값을 mod로 나눈 나머지를 반환합니다.


> > > pow(38, -1, mod=97)
> > > 23
> > > 23 \* 38 % 97 == 1
> > > True

round(number[, ndigits])
반올림한 값을 반환합니다.


> > > #ndigits 인자 즉, 소수점 자리를 생략한 경우
> > > round(1)
> > > 1
> > > round(1.4)
> > > 1
> > > round(1.6)
> > > 2

> > > #소수점 자리를 명시한 경우
> > > round(1.343,2)
> > > 1.34
> > > round(1.346,2)
> > > 1.35

Math module

수학적 계산과 관련된 함수들을 제공하는 모듈(복소수는 cmath 모듈이 따로 존재)
내가 사용하는 환경 3.7.6v에서는 50개의 함수가 있다(작성일 기준 최신버전 3.8에서는 55개가 있음)


# test.py written in PyCharm

import math
import sys

s = dir(math)
mod = [n for n in s if not n.startswith('_')]

print('Python 버전:', sys.version)
print()
print('function 개수:', len(mod))
print(mod)
Python 버전: 3.7.6
[Clang 10.0.0 (clang-1000.11.45.5)]

function 개수: 50
['acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

표현 함수

함수설명
ceil(x)올림
floor(x)내림
trunc(x)절사
삼각 함수
함수설명
cos(x)코사인
sin(x)사인
tan(x)탄젠트
acos(x)아크코사인
asin(x)아크사인
atan(x)아크탄젠트
atan2(x, y)x/y 아크탄젠트
하이퍼볼릭 함수
함수설명
cosh(x)하이퍼볼릭 코사인
sinh(x)하이퍼볼릭 사인
tanh(x)하이퍼볼릭 탄젠트
acosh(x)하이퍼볼릭 아크코사인
asinh(x)하이퍼볼릭 아크사인
atanh(x)하이퍼볼릭 아크탄젠트
각도변환 함수
함수설명
degrees(x)60분법으로 변환
radians(x)호도법으로 변환
논리 함수
함수설명
isclose(x, y, rel_tol=z)x와 y가 (z*1e+02)% 내외로 가까우면 True, 아니면 False
isinf(x)x가 inf이면 True, 아니면 False
isfinite(x)x가 inf, nan이면 False, 아니면 True
isnan(x)x가 nan이면 True, 아니면 False
로그 함수
함수설명
log(x, y)y를 밑으로 하는 x 로그
log10(x)10을 밑으로 하는 x로그
log1p(x)e를 밑으로 하는 x+1로그
log2(x)2를 밑으로 하는 x로그
연산 함수
함수설명
pow(x, y)x의 y승
sqrt(x)루트 x
erf(x)오차함수
erfc(x)여오차함수
exp(x)e의 x승
expm1e의 x-1승
frexp(x)x를 (가수부, 지수부)로 반환
ldexp(x, y)x*(2^y)
gamma(x)감마함수
lgamma(x)감마함수의 자연로그
factorial(x)팩토리얼
fsum([x, y, z, …])리스트의 합
fmod(x, y)x를 y로 나눈 나머지
fabs(x)절대값
gcd(x, y)x와 y의 최대공약수
hypot(x, y)유클리드 놈을 반환
modf(x)x를 (소수부, 정수부)로 반환
copysign(x, y)y의 부호를 사용하는 x를 반환
상수 함수
함수설명
ee
piπ
tauτ
inf
nanNot a Number

Python 3.8.2 Documentation - Math

**Polar Coordinates**

극좌표계 - 위키피디아


Polar Coordinates


문제 : 복소수를 극좌표로 표현하는 문제
입력 : 복소수 z;
출력 : z를 극좌표에 표현했을 때의 r, ϕ를 출력

r : Distance from to origin, i.e.,
ϕ : Counter clockwise angle measured from the positive -axis to the line segment

1+2j

2.23606797749979
1.1071487177940904

polar(x) 함수는 abs(x), phase(x) 의 값을 반환한다
즉, 위 그림에서의 r(점까지의 거리), ϕ(위상) 에 해당한다
자세한 설명은 - cmath 모듈

import cmath

z = complex(input())
print(\*cmath.polar(z), sep='\n')